{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from openai import OpenAI\n",
    "\n",
    "client = OpenAI(\n",
    "    api_key=\"sk-0e687ddcf0164a6fb66c1096447223c4\",  # 阿里百炼大模型API获取：https://bailian.console.aliyun.com/?apiKey=1#/api-key\n",
    "    base_url=\"https://dashscope.aliyuncs.com/compatible-mode/v1\" # 使用文档：https://help.aliyun.com/zh/model-studio/getting-started/what-is-model-studio\n",
    ")\n",
    "\n",
    "def llm(system_prompt, user_query):\n",
    "\n",
    "    completion = client.chat.completions.create(\n",
    "        model=\"deepseek-r1-distill-qwen-32b\", # deepseek-r1, deepseek-r1-distill-qwen-32b  模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models\n",
    "        messages=[{'role': 'system', 'content': system_prompt},\n",
    "                  {'role': 'user', 'content': user_query}],\n",
    "        )\n",
    "    return completion.choices[0].message"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## cite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'<answer with citations start>\\n\\n《万水千山总是情》<cite>[1]</cite> ：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite>\\n\\n《笔记》<cite>[3][4]</cite> ：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite>\\n\\n《阿里山的姑娘》<cite>[5]</cite> ：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite>\\n\\n《青春舞曲》<cite></cite> ：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite>\\n\\n《解脱》<cite></cite> ：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite>\\n\\n</answer with citations end>'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"周笔畅在《超级女声》中演唱了哪些歌曲？\"\n",
    "context = \"\"\"\n",
    "Snippet [1]\n",
    "超级女声决赛：周笔畅演唱《万水千山总是情》\n",
    "\n",
    "Snippet [2]\n",
    "王菲演唱《我好想你》\n",
    "\n",
    "Snippet [3]\n",
    "《笔记》是周笔畅演唱的歌曲，由黄友桢作曲，唐恬和黄友桢作词。这首歌收录于2005年超级女声《终极PK》合集，并获得多项音乐奖项。\n",
    "\n",
    "Snippet [4]\n",
    "《笔记》作为周笔畅出道后的第一首个人作品，由黄友桢作曲，唐恬（墨墨）作词。\n",
    "\n",
    "Snippet [5]\n",
    "决赛中，5位选手合唱了《想唱就唱》、《天仙配》、《凤阳花鼓》和《爱我中华》等歌曲。在主打演唱曲目环节，张靓颖演唱了《loving you》，何洁演唱了《谁与争锋》，纪敏佳演唱了《蒙古人》，周笔畅演唱了《阿里山的姑娘》。\n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "《万水千山总是情》 ：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。\n",
    "\n",
    "《笔记》 ：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。\n",
    "\n",
    "《阿里山的姑娘》 ：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。\n",
    "\n",
    "《青春舞曲》 ：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。\n",
    "\n",
    "《解脱》 ：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your task is to add citations to the existing answer. \n",
    "Specifically, when a factual statement S in the answer uses information from context snippets I1, I2, ..., In, please add citations by appending these snippet numbers to S in the format “<statement>[S]<cite>[I1][I2]...[In]</cite></statement>”. \n",
    "For other sentences such as introductory sentences, summarization sentences, reasoning, and inference, you still need to append “<cite></cite>” to them to indicate they need no citations. \n",
    "Except for adding citations, do not change the original content and format of the existing answer.\n",
    "\n",
    "## OUTPUTE EXAMPLE\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "Now get ready to add citations for the following test case.\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Existing Answer Start]\n",
    "{answer}\n",
    "[Existing Answer End]\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case2\n",
    "\n",
    "query = \"油田完整性管理的定义与范围\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'<statement>油田完整性管理涵盖了油气井、管道及其他设施的全生命周期管理，包括设计、施工、运营、维护和废弃等阶段。其主要目的是通过持续的风险评估和控制，确保设施的安全可靠运行。<cite>[4][5]</cite></statement>\\n\\n<statement>具体来说，油田完整性管理包括以下几个方面：<cite></cite></statement>\\n\\n<statement>- 井筒完整性：通过建立有效的井筒屏障，防止地层流体无控制地向外泄漏，确保油气井的安全运行。<cite></cite></statement>\\n\\n<statement>- 管道完整性：识别和评估管道面临的风险因素，采取相应的风险消减措施，将风险控制在合理、可接受的范围内。<cite>[1][2]</cite></statement>\\n\\n<statement>- 站场完整性：通过设备健康监测系统、定期检测和维护，确保站场设备的可靠性和安全性<cite>[3]</cite></statement>'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"油田完整性管理的定义与范围\"\n",
    "context = \"\"\"\n",
    "Snippet [1]\n",
    "管道完整性是指管道处于安全可靠的服役状态，主要包括管道在结构和功能上是完整的，管道处于风险受控状态，管道的安全状态可满足当前运行要求。管道完整性管理是指对管道面临的风险因素不断进行识别和评价，持续消除识别到的不利影响因素，采取各种风险消减措施，将风险控制在合理、可接受的范围内，最终实现安全、可靠、经...\n",
    "\n",
    "Snippet [2]\n",
    "术语和定义中，管道完整性被定义为管道在结构和功能上是完整的，处于风险受控状态，且安全状态可满足当前运行要求。管道完整性管理（PIM）是对管道面临的风险因素进行识别和评价，持续消除不利影响因素，采取风险消减措施，并定期开展风险评估，以确保管道处于安全可靠的服役状态。\n",
    "\n",
    "Snippet [3]\n",
    "3.5 站场完整性管理流程站场完整性管理是一个系统工程，包括体系设计、风险评估、腐蚀防护、完整性评价、设备设施管理、应急响应和运行维护等环节。\n",
    "\n",
    "Snippet [4]\n",
    "该标准涵盖了地上石油储（备）库的完整性管理，包括对设备设施进行风险评估、制定管理方案、实施效能评价等内容。其中，完整性管理是指持续评估和控制风险，确保设备设施的安全可靠运行；风险评价则是通过失效概率和后果的乘积表征风险等级；效能评价则针对完整性管理的实施效果和能力开展评价活动。\n",
    "\n",
    "Snippet [5]\n",
    "建设期完整性管理方面，应开展各阶段的数据采集和管理，确保数据完整准确地移交至下一阶段。建设单位应建立失效数据库，记录失效过程、后果、原因等信息，并具备查询和分析功能。建设期数据管理包括规划、设计、采购、施工、检测与验收及试运行等多个阶段的数据收集与整合。\n",
    "\n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "油田完整性管理涵盖了油气井、管道及其他设施的全生命周期管理，包括设计、施工、运营、维护和废弃等阶段。其主要目的是通过持续的风险评估和控制，确保设施的安全可靠运行。具体来说，油田完整性管理包括以下几个方面：\n",
    "\n",
    "- 井筒完整性：通过建立有效的井筒屏障，防止地层流体无控制地向外泄漏，确保油气井的安全运行。\n",
    "- 管道完整性：识别和评估管道面临的风险因素，采取相应的风险消减措施，将风险控制在合理、可接受的范围内。\n",
    "- 站场完整性：通过设备健康监测系统、定期检测和维护，确保站场设备的可靠性和安全性\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "周笔畅在《超级女声》中演唱了多首歌曲：\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your task is to add citations to the existing answer. \n",
    "Specifically, when a factual statement S in the answer uses information from context snippets I1, I2, ..., In, please add citations by appending these snippet numbers to S in the format “<statement>[S]<cite>[I1][I2]...[In]</cite></statement>”. \n",
    "For other sentences such as introductory sentences, summarization sentences, reasoning, and inference, you still need to append “<cite></cite>” to them to indicate they need no citations. \n",
    "Except for adding citations, do not change the original content and format of the existing answer.\n",
    "\n",
    "## OUTPUTE EXAMPLE\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "Now get ready to add citations for the following test case.\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Existing Answer Start]\n",
    "{answer}\n",
    "[Existing Answer End]\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case3\n",
    "\n",
    "query:\n",
    "如何识别高后果区\n",
    "\n",
    "context:\n",
    "略\n",
    "\n",
    "output:\n",
    "识别高后果区的方法如下：\n",
    "\n",
    "<statement>1. 资料收集：包括管道名称、规格、设计压力等信息及反映管道走向的资料。<cite>[1]</cite></statement>\n",
    "<statement>2. 管道地区等级划分：按沿线居民户数和建筑物密集程度划分为四个地区等级，执行GB50253-2014《输油管道工程设计规范》附录F标准。<cite>[1]</cite></statement>\n",
    "<statement>3. 村庄、乡镇统计：统计油田集输管道两侧各200米内有村庄、乡镇聚居户数等信息。<cite>[1]</cite></statement>\n",
    "<statement>4. 道路、易燃易爆场所统计：统计两侧50米范围内高速公路、国道、省道、铁路及易燃易爆场所情况。<cite>[1]</cite></statement>\n",
    "<statement>5. 国家自然保护地区和水源地统计：统计两侧200米内湿地、森林、河口等保护区域以及水源地信息。<cite>[1]</cite></statement>\n",
    "\n",
    "<statement>高后果区识别应由熟悉管道沿线情况的人员完成，并形成《高后果区识别报告》。<cite>[1]</cite></statement>\n",
    "<statement>每年进行一次识别，如发生管道改线或周边环境重大变化时应及时重新开展识别工作。<cite>[1]</cite></statement>\n",
    "\n",
    "expect_output:\n",
    "识别高后果区的方法如下：\n",
    "\n",
    "<statement>1. 资料收集：包括管道名称、规格、设计压力等信息及反映管道走向的资料。\n",
    "2. 管道地区等级划分：按沿线居民户数和建筑物密集程度划分为四个地区等级，执行GB50253-2014《输油管道工程设计规范》附录F标准。\n",
    "3. 村庄、乡镇统计：统计油田集输管道两侧各200米内有村庄、乡镇聚居户数等信息。\n",
    "4. 道路、易燃易爆场所统计：统计两侧50米范围内高速公路、国道、省道、铁路及易燃易爆场所情况。\n",
    "5. 国家自然保护地区和水源地统计：统计两侧200米内湿地、森林、河口等保护区域以及水源地信息。\n",
    "\n",
    "高后果区识别应由熟悉管道沿线情况的人员完成，并形成《高后果区识别报告》。\n",
    "每年进行一次识别，如发生管道改线或周边环境重大变化时应及时重新开展识别工作。<cite>[1]</cite></statement>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ChatCompletionMessage(content='识别高后果区的方法如下：\\n\\n<statement>1. 资料收集：包括管道名称、规格、设计压力等信息及反映管道走向的资料。<cite>[1]</cite></statement>\\n\\n<statement>2. 管道地区等级划分：按沿线居民户数和建筑物密集程度划分为四个地区等级，执行GB50253-2014《输油管道工程设计规范》附录F标准。<cite>[1]</cite></statement>\\n\\n<statement>3. 村庄、乡镇统计：统计油田集输管道两侧各200米内有村庄、乡镇聚居户数等信息。<cite>[1]</cite></statement>\\n\\n<statement>4. 道路、易燃易爆场所统计：统计两侧50米范围内高速公路、国道、省道、铁路及易燃易爆场所情况。<cite>[1]</cite></statement>\\n\\n<statement>5. 国家自然保护地区和水源地统计：统计两侧200米内湿地、森林、河口等保护区域以及水源地信息。<cite>[1]</cite></statement>\\n\\n<statement>高后果区识别应由熟悉管道沿线情况的人员完成，并形成《高后果区识别报告》。<cite>[1]</cite></statement>\\n\\n<statement>每年进行一次识别，如发生管道改线或周边环境重大变化时应及时重新开展识别工作。<cite></cite></statement>', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='好的，我现在需要根据用户的要求，给现有的回答添加引用。首先，我得仔细阅读用户提供的指南和示例，确保我理解任务的每一个细节。\\n\\n用户的任务是将现有回答中的每个事实陈述与其引用的上下文片段联系起来，并在适当的位置添加引用标记。具体来说，每个事实陈述后面需要添加<cite>标签，里面包含引用的片段编号，比如[c1][c2]等。如果某个陈述不需要引用，比如总结句或推理句，也必须添加<cite></cite>，但里面不包含任何片段编号。\\n\\n接下来，我需要分析用户提供的上下文片段，看看每个片段的内容，以及它们如何支持现有回答中的各个陈述。上下文有两个片段，[1]和[2]。片段[1]详细描述了高后果区识别的步骤，包括资料收集、地区等级划分、村庄统计、道路统计、自然保护地区统计，以及识别流程。片段[2]是一个案例，说明了如何应用这些步骤，但没有提供新的识别方法。\\n\\n现在，我来看现有的回答，它分为几个步骤：资料收集、地区等级划分、村庄统计、道路统计、自然保护地区和水源地统计，以及识别人员和报告的要求。根据片段[1]的内容，这些步骤都详细说明了，因此每个步骤都应该引用[1]。\\n\\n例如，资料收集部分提到了管道名称、规格、设计压力等，这在片段[1]的资料收集部分有详细说明，因此引用[1]。同样，地区等级划分、村庄统计、道路统计、自然保护地区统计等，都在片段[1]中有对应的内容，所以每个步骤都需要引用[1]。\\n\\n接下来，回答中提到高后果区识别应由熟悉管道情况的人员完成，并形成报告，这在片段[1]的高后果区识别部分有提到，因此这部分也应引用[1]。\\n\\n最后，关于每年进行识别以及管道改线或环境变化时重新识别，这部分在现有回答中没有明确的来源，因此可能不需要引用，或者可能需要额外的上下文支持，但根据用户提供的上下文，这部分可能没有对应的片段，所以可能不需要引用，或者可能需要添加<cite></cite>。\\n\\n总结一下，每个步骤都应该引用[1]，而没有其他片段提供额外的信息。因此，在现有回答的每个陈述后面添加<cite>[1]</cite>是正确的做法。\\n\\n现在，我需要按照这个思路来修改现有的回答，确保每个陈述都有正确的引用，并且格式符合用户的要求。')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"如何识别高后果区\"\n",
    "context = \"\"\"\n",
    "Snippet [1]\n",
    "      \"title\": \"a3178x1tmk1s:a35gf1ubjqio:a35jxbcy8f0g:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\",\n",
    "      \"content\": \"4.1 集输油管道高后果区识别\\n管道经过区域符合如下任何一条的区域为高后果区：\\n1）管道经过的四级地区；\\n2）管道经过的三级地区；\\n3）管道两侧各200m内有聚居户数在50户或以上的村庄、乡镇等；\\n4）管道两侧各50m内有高速公路、国道、省道、铁路及易燃易爆场所等；\\n5）管道两侧各200m内有湿地、森林、河口等国家自然保护地区；\\n6）管道两侧各200m内有水源、河流、大中型水库。\\n随着管道周边人口和环境的变化，高后果区的位置和范围也会随着改变。高后果区识别流程见图4-1。\\n图4-1 管道高后果区识别工作流程图\\n1）资料收集\\n包括管道名称，管道规格，管道设计压力（MPa），管道最大允许操作压力（MAOP）（表压）（MPa）及能反映管道走向的资料（如：管道测绘图，管道带状图等）。\\n2）管道地区等级划分\\n按管道沿线居民户数和（或）建筑物的密集程度等划分等级，分为四个地区等级，划分标准执行GB50253-2014《输油管道工程设计规范》附录F。\\n3）村庄、乡镇统计\\n统计油田集输管道两侧各200m内有村庄、乡镇聚居户数等。\\n4）道路、易燃易爆场所统计\\n统计油田集输管道两侧各50m内有高速公路、国道、省道、铁路及易燃易爆场所等；\\n5）国家自然保护地区、水源地统计\\n统计油田集输管道两侧各200m内有湿地、森林、河口等国家自然保护地区；统计油田集输管道两侧各200m内有水源、河流、大中型水库。\\n6）高后果区识别\\n高后果区识别应由熟悉管道沿线情况的人员进行。\\n高后果区识别结果可包括高后果区管段起止点，长度，管段描述，减缓措施等内容。\\n\"\n",
    "\n",
    "Snippet [2]\n",
    "      \"title\": \"a3178x1tmk1s:a35gf1ubjqio:a35scpbwr280:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\",\n",
    "      \"content\": \"8.2 出油管道检测、评价与修复案例\\n某出油管道于2013年投运，全长0.7km，管道材质为L245NB钢，管线规格为Φ89×5mm，设计压力6.4MPa，最大输送量10万吨/年，近三年最大运行压力0.7MPa，外防腐层材料为3PE，采用牺牲阳极保护系统。输送介质为原油，平均含水量43%（体积分数），历史上发生过4次内腐蚀失效，既往未开展过任何检测评价工作。\\n1.管道分类：\\n根据管道分类原则，由于管径89mm，近三年最大运行压力0.7MPa，故该管道属于Ⅲ类管道。\\n2.依据收集的管道资料进行管道高后果区识别和风险评价：\\n首先依据4.3进行区域高后果区识别：结果为非高后果区。\\n采用定性风险评价法（见5.1）对管道进行风险评价，结果为低风险段。\\n3.管道分级：\\n根据管道分级原则，存在高后果区管段、高风险管段定为高风险级。故管道全线为非高风险级。\\n\"\n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "识别高后果区的方法如下：\\n\\n1. 资料收集：包括管道名称、规格、设计压力等信息及反映管道走向的资料。\\n2. 管道地区等级划分：按沿线居民户数和建筑物密集程度划分为四个地区等级，执行GB50253-2014《输油管道工程设计规范》附录F标准。\\n3. 村庄、乡镇统计：统计油田集输管道两侧各200米内有村庄、乡镇聚居户数等信息。\\n4. 道路、易燃易爆场所统计：统计两侧50米范围内高速公路、国道、省道、铁路及易燃易爆场所情况。\\n5. 国家自然保护地区和水源地统计：统计两侧200米内湿地、森林、河口等保护区域以及水源地信息。\\n\\n高后果区识别应由熟悉管道沿线情况的人员完成，并形成《高后果区识别报告》。每年进行一次识别，如发生管道改线或周边环境重大变化时应及时重新开展识别工作。\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "周笔畅在《超级女声》中演唱了多首歌曲：\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your task is to add citations to the existing answer. \n",
    "Specifically, when a factual statement S in the answer uses information from context snippets I1, I2, ..., In, please add citations by appending these snippet numbers to S in the format “<statement>[S]<cite>[I1][I2]...[In]</cite></statement>”. \n",
    "For other sentences such as introductory sentences, summarization sentences, reasoning, and inference, you still need to append “<cite></cite>” to them to indicate they need no citations. \n",
    "Except for adding citations, do not change the original content and format of the existing answer.\n",
    "\n",
    "## OUTPUTE EXAMPLE\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "Now get ready to add citations for the following test case.\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Existing Answer Start]\n",
    "{answer}\n",
    "[Existing Answer End]\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case4\n",
    "\n",
    "output:\n",
    "<statement>《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》及相关三个技术导则均于2017年7月发布。<cite>[1][2][3]</cite></statement>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ChatCompletionMessage(content='<statement>《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》及相关三个技术导则均于2017年7月发布。<cite>[1][2][3]</cite></statement>', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='好的，我现在需要处理用户的查询，任务是为现有的答案添加引文。首先，我得仔细阅读用户提供的指南，确保理解正确的格式和要求。\\n\\n用户的目标是在每个事实陈述后面添加引用，使用上下文片段的编号。如果句子是引言、总结、推理或推断，即使没有引用，也要加上空的<cite>标签。\\n\\n接下来，我查看了提供的上下文片段。片段1提到了《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》于2017年7月18日发布。片段2和3分别提到了气田和油田集输管道的技术导则，但没有明确的发布日期。不过，片段1中提到的导则发布日期可以作为参考，因为它们都是在同一年发布的。\\n\\n现有的答案指出，这四个文件都是在2017年7月发布的。片段1明确提到了2017年7月18日，所以可以引用片段1作为支持。片段2和3虽然没有具体日期，但提到了发布的内容，所以也可以引用它们作为支持。\\n\\n因此，我决定在答案中引用片段1、2和3，因为它们都支持答案中的陈述。这样，答案将被包裹在<statement>标签中，并在后面加上<cite>[1][2][3]</cite>。\\n\\n最后，我确保不改变现有答案的内容，只是添加了必要的引文。这样，用户的要求就被满足了，同时保持了格式的一致性。')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"一规三则是什么时候发布的\"\n",
    "context = \"\"\"\n",
    "Snippet [1]\n",
    "      \"title\": \"a3178x1tmk1s:a35iye5d0cg0:a365dlvk47pc:4.中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则-20170707.docx\",\n",
    "      \"content\": \"为科学推进油气田管道和站场完整性管理工作，助力上游业务提质、降本、增效发展，提高油气田管道和站场管理水平，股份公司勘探与生产分公司组织规划总院编制完成了《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》，组织西南油气田分公司编制完成了《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，从管理和技术两个方面对完整性管理提出了具体的要求。管理规定和三个技术导则互相支持、互为补充，是上游板块完整性管理文件体系的重要内容。\\n《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，按照站场分类分级，重点阐述了油气集输站场检测评价及维护的技术要求，并分动设备、静设备和安全仪表系统，对RBI、RCM、SIL等内容进行了说明。最后给出了站场评价案例。\\n本导则由中国石油天然气股份有限公司勘探与生产分公司提出和归口。\\n编制单位：中国石油天然气股份有限公司勘探与生产分公司、西南油气田分公司。\\n主要起草人：张维智  秦  林  崔铭芳  吕庆贵  郭霄雄  \\n齐昌超  肖  宏  万泽君  杜炘洁  熊  杰  \\n何  沫  付  进  刘长林  蒋  毅\\n主要参加人：刘海峰  李  冰  陈宏健  李国才  张  昆  \\n李曙华  李成龙  李  岩  李  予  张洪海  \\n李洪福  李本全  李春雨  刘  勇  马海峰  \\n胡  静  班兴安  胡玉涛  苗新康  崔新村  \\n审核人：汤  林\\n审定人：王元基\\n本规定于2017年7月18日首次发布。\\n目  录\\n1 规范性引用文件\\t1\\n2 设备分类分级\\t1\\n3 静设备检测与评价\\t2\\n\"\n",
    "\n",
    "Snippet [2]\n",
    "      \"title\": \"a3178x1tmk1s:a35ix106fbwg:a35srew7sr9c:3.中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则-20170707(1).docx\",\n",
    "      \"content\": \"前  言\\n完整性管理是为保障油气田管道和站场完整、提高本质安全而进行的一系列管理活动，是近年来逐渐发展成熟并得到成功应用的管理体系。2016年以来，中国石油天然气股份有限公司（以下简称“股份公司”）启动油气田管道和站场完整性管理工作，持续开展试点工程，并配套开展了科研攻关，取得了良好的效果。完整性管理被证明是油气田管道和站场提升本质安全，延长使用寿命，提高经济效益的有效手段。\\n为科学推进油气田管道和站场完整性管理工作，助力上游业务提质、降本、增效发展，提高油气田管道和站场管理水平，股份公司勘探与生产分公司组织规划总院编制完成了《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》，组织西南油气田分公司编制完成了《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，从管理和技术两个方面对完整性管理提出了具体的要求。管理规定和三个技术导则互相支持、互为补充，是上游板块完整性管理文件体系的重要内容。\\n《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》，按照管道分类分级，重点阐述了气田集输管道检测评价及修复的技术要求，并对高后果区识别、风险评价、适用性评价等内容进行了说明。最后分输气、采气管道给出了使用案例。\\n\"\n",
    "\n",
    "Snippet [3]      \n",
    "      \"title\": \"a3178x1tmk1s:a35gf1ubjqio:a35ixqlhz37k:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\",\n",
    "      \"content\": \"\\n前  言\\n完整性管理是为保障油气田管道和站场完整、提高本质安全而进行的一系列管理活动，是近年来逐渐发展成熟并得到成功应用的管理体系。2016年以来，中国石油天然气股份有限公司（以下简称“股份公司”）启动油气田管道和站场完整性管理工作，持续开展试点工程，并配套开展了科研攻关，取得了良好的效果。完整性管理被证明是油气田管道和站场提升本质安全，延长使用寿命，提高经济效益的有效手段。\\n为科学推进油气田管道和站场完整性管理工作，助力上游业务提质、降本、增效发展，提高油气田管道和站场管理水平，股份公司勘探与生产分公司组织规划总院编制完成了《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》，组织西南油气田分公司编制完成了《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，从管理和技术两个方面对完整性管理提出了具体的要求。管理规定和三个技术导则互相支持、互为补充，是上游板块完整性管理文件体系的重要内容。\\n《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》，按照管道分类分级，重点阐述了油田集输管道检测评价及修复的技术要求，并对高后果区识别、风险评价、适用性评价等内容进行了说明。最后分集油、出油管道给出了使用案例。\\n\"      \n",
    "      \n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》及相关三个技术导则均于2017年7月发布。\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "周笔畅在《超级女声》中演唱了多首歌曲：\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your task is to add citations to the existing answer. \n",
    "Specifically, when a factual statement S in the answer uses information from context snippets I1, I2, ..., In, please add citations by appending these snippet numbers to S in the format “<statement>[S]<cite>[I1][I2]...[In]</cite></statement>”. \n",
    "For other sentences such as introductory sentences, summarization sentences, reasoning, and inference, you still need to append “<cite></cite>” to them to indicate they need no citations. \n",
    "Except for adding citations, do not change the original content and format of the existing answer.\n",
    "\n",
    "## OUTPUTE EXAMPLE\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "Now get ready to add citations for the following test case.\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Existing Answer Start]\n",
    "{answer}\n",
    "[Existing Answer End]\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case5\n",
    "\n",
    "output:\n",
    "\n",
    "进行管道内检测的步骤如下：\n",
    "\n",
    "1. **准备阶段**：根据检查需求选择合适的检测方法，如超声波、磁粉或射线照相等。<cite>[1][4]</cite>\n",
    "2. **清理管道**：确保内部无阻碍物以提高设备效率。<cite>[2]</cite>\n",
    "3. **安装检测工具**：将带有传感器和摄像头的仪器送入管道内。<cite>[1][4]</cite>\n",
    "4. **执行检测操作**：\n",
    "    - 数据采集：利用内置传感器获取关键参数信息。<cite>[1][4]</cite>\n",
    "    - 实时监控与记录：通过无线或电缆传输数据至地面控制中心。<cite>[1][4]</cite>\n",
    "5. **数据分析与报告生成**：\n",
    "    - 解析信息，识别潜在问题并编写详细技术报告。<cite>[1]</cite>\n",
    "6. **验证与后续行动**：根据分析结果制定修复计划。<cite>[2]</cite>\n",
    "\n",
    "确保操作符合相关行业标准和法规。<cite>[3]</cite>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ChatCompletionMessage(content='如何进行管道内检测：\\n\\n<statement>管道内检测主要通过智能内检测、直接评价、压力试验等方法进行。<cite>[1]</cite></statement>\\n\\n<statement>智能内检测技术包括几何测径和漏磁检测，可以提取管道的几何变形、本体缺陷和焊接缺陷等信息。<cite>[4]</cite></statement>\\n\\n<statement>在管道维修时，应优先采用对生产影响较小且安全环保的技术，避免使用影响智能内检测器通过性的维修方法。<cite>[2]</cite></statement>\\n\\n<statement>管道内检测是完整性管理的重要组成部分，通过科学的方法和技术手段，能够有效评估管道状态，确保管道安全运行。<cite></cite></statement>', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='嗯，用户的问题是“如何进行管道内检测”，我需要根据提供的四个上下文文档来回答这个问题，并且在回答中添加正确的引用。首先，我要仔细阅读每个文档，找出与管道内检测相关的信息。\\n\\n文档[1]提到检测评价包括智能内检测、直接评价、压力试验等方法，特别是智能内检测用来确定管道当前状况。这应该是内检测的一种主要方法，所以这句话应该引用文档[1]。\\n\\n文档[2]提到在管道维修时，优先采用对生产影响较小且安全环保的技术，并且对于使用智能内检测的管道，不应采用影响内检测器通过性的维修方法。这说明在维修过程中需要考虑内检测器的使用，所以这句话引用文档[2]。\\n\\n文档[3]主要介绍了完整性管理的规定和导则，提到了检测评价及修复技术导则，可能间接支持内检测的方法，但没有直接描述检测过程，所以可能不需要直接引用。\\n\\n文档[4]详细列出了智能内检测的技术方法和要求，包括参考标准、检测内容等，这些都是内检测的具体步骤，所以这句话引用文档[4]。\\n\\n接下来，我需要将这些信息整合成一个连贯的回答，每个部分都添加相应的引用。同时，注意保持回答的结构清晰，分点列出检测方法和步骤，并在最后总结。\\n\\n现在，我需要确保每个句子都有正确的引用，同时保持回答的流畅性和准确性。例如，智能内检测的方法引用文档[1]和[4]，维修时的技术考虑引用文档[2]，而其他部分可能不需要引用，但需要在适当的位置添加<cite></cite>标记。\\n\\n最后，检查整个回答是否涵盖了所有相关信息，并且引用是否正确无误。确保没有遗漏任何关键点，并且每个引用都对应到正确的文档。')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"如何进行管道内检测\"\n",
    "context = \"\"\"\n",
    "文档[1]\n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a329df4az280:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"1.8 检测评价 inspection assessment\\n通过智能内检测、直接评价、压力试验或其他已证实的可以确定管道状态的等同技术来确定管道当前状况的过程。\\n\"\n",
    "\n",
    "文档[2]\n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a323sgxfu3gg:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"管道进行维修时，优先采用对生产影响较小且安全环保的技术。对于采用智能内检测的管道，不应采用影响内检测器通过性的维修方法。管体缺陷修复相关技术要求按照《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》第七章和《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》第七章执行，参见表5-2和表5-3。\\n\"\n",
    "\n",
    "文档[3]      \n",
    "      \"title\": \"a3178x1tmk1s:a35gf1ubjqio:a35ixqlhz37k:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\",\n",
    "      \"content\": \"\\n前  言\\n完整性管理是为保障油气田管道和站场完整、提高本质安全而进行的一系列管理活动，是近年来逐渐发展成熟并得到成功应用的管理体系。2016年以来，中国石油天然气股份有限公司（以下简称“股份公司”）启动油气田管道和站场完整性管理工作，持续开展试点工程，并配套开展了科研攻关，取得了良好的效果。完整性管理被证明是油气田管道和站场提升本质安全，延长使用寿命，提高经济效益的有效手段。\\n为科学推进油气田管道和站场完整性管理工作，助力上游业务提质、降本、增效发展，提高油气田管道和站场管理水平，股份公司勘探与生产分公司组织规划总院编制完成了《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》，组织西南油气田分公司编制完成了《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，从管理和技术两个方面对完整性管理提出了具体的要求。管理规定和三个技术导则互相支持、互为补充，是上游板块完整性管理文件体系的重要内容。\\n《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》，按照管道分类分级，重点阐述了油田集输管道检测评价及修复的技术要求，并对高后果区识别、风险评价、适用性评价等内容进行了说明。最后分集油、出油管道给出了使用案例。\\n\"      \n",
    "Snippet [4]      \n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a320f5h7kkjk:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"表4-1  Ⅰ类管道基线检测技术方法要求\\n<table style='width: 100%' border='1'><tr><td>检测项目</td><td>参考标准</td><td>技术方法及要求</td></tr><tr><td>管道中心线测量</td><td>Q/SY 1180.6</td><td>采集精度达到亚米级，宜选用载波相位差分（RTK）测量技术。建设期以管道焊缝为特征点采集坐标；运行初期以75米间距采集埋深和位置坐标。</td></tr><tr><td rowspan=4>路由调查</td><td>GB 50251</td><td rowspan=4>采集管道附属设施及周边信息数据。涉及坐标采集时，宜选用RTK测量技术。</td></tr><tr><td>SY/T 0087.1</td></tr><tr><td>SY/T 6064</td></tr><tr><td>SY/T 6828</td></tr><tr><td rowspan=3>智能内检测</td><td>GB/T 27699</td><td rowspan=3>选择几何测径和漏磁检测。提取几何变形、本体缺陷、焊接缺陷等信息。</td></tr><tr><td>SY/T 6597</td></tr><tr><td>Q/SY 1267</td></tr><tr><td rowspan=3>外腐蚀检测</td><td>GB/T 19285</td><td rowspan=3>应开展防腐层整体性能和缺陷检测、极化电位测试、自然电位测试；高风险区域进行密间隔电位（CIPS）测试。</td></tr><tr><td>GB/T 21246</td></tr><tr><td>SY/T 0087.1</td></tr></table>\\n\"\n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "进行管道内检测的步骤如下：\\n\\n1. **准备阶段**：根据检查需求选择合适的检测方法，如超声波、磁粉或射线照相等。\\n2. **清理管道**：确保内部无阻碍物以提高设备效率。\\n3. **安装检测工具**：将带有传感器和摄像头的仪器送入管道内。\\n4. **执行检测操作**：\\n   - 数据采集：利用内置传感器获取关键参数信息。\\n   - 实时监控与记录：通过无线或电缆传输数据至地面控制中心。\\n5. **数据分析与报告生成**：\\n   - 解析信息，识别潜在问题并编写详细技术报告。\\n6. **验证与后续行动**：根据分析结果制定修复计划。\\n\\n确保操作符合相关行业标准和法规。\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "周笔畅在《超级女声》中演唱了多首歌曲：\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your task_1 is answer the question with contexts.\n",
    "Your task_2 is add citations to the answer. \n",
    "Specifically, when a factual statement S in the answer uses information from context snippets I1, I2, ..., In, please add citations by appending these snippet numbers to S in the format “<statement>[S]<cite>[I1][I2]...[In]</cite></statement>”. \n",
    "For other sentences such as introductory sentences, summarization sentences, reasoning, and inference, you still need to append “<cite></cite>” to them to indicate they need no citations. \n",
    "Except for adding citations, do not change the original content and format of the existing answer.\n",
    "\n",
    "## OUTPUTE EXAMPLE\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "现在，请根据以下上下文回答问题，并在答案末尾标注引用文档的序号。\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case 6\n",
    "\n",
    "改进提示词，使之更简洁。\n",
    "\n",
    "output:\n",
    "ChatCompletionMessage(content='根据提供的上下文，管道内检测主要通过智能内检测技术进行，具体步骤和技术要求如下：\\n\\n1.\n",
    "\n",
    " **智能内检测技术**：主要采用几何测径和漏磁检测方法，用于识别管道的几何变形、本体缺陷和焊接缺陷。该技术符合GB/T 27699、SY/T 6597和Q/SY 1267等标准要求。\\n2\n",
    " . \n",
    " **检测流程**：在检测过程中，需要确保检测器能够顺利通过管道，避免使用可能影响其通过性的维修方法。\\n\\n通过这些方法，可以有效评估管道的当前状况，确保其安全性和完整性。\\n\\n<statement>管道内检测主要通过智能内检测技术进行，采用几何测径和漏磁检测方法，用于识别管道的几何变形、本体缺陷和焊接缺陷。该技术符合GB/T 27699、SY/T 6597和Q/SY 1267等标准要求。<cite>[1][4]</cite></statement>', \n",
    " \n",
    " refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, \n",
    " \n",
    " reasoning_content='嗯，我现在需要回答的问题是如何进行管道内检测。首先，我得看看提供的上下文里有什么相关信息。让我仔细看看每个文档的内容。\\n\\n文档[1]提到“检测评价”是通过智能内检测、直接评价、压力试验或其他技术来确定管道当前状况的过程。这说明智能内检测是一个重要的方法，应该是管道内检测的一部分。\\n\\n文档[2]讲的是管道维修时优先使用不影响生产的环保技术，并且提到对于采用智能内检测的管道，不应采用影响内检测器通过性的维修方法。这说明在维修时，要考虑到内检测器的使用，可能涉及到检测前的准备工作。\\n\\n文档[3]虽然主要讲完整性管理的背景和组成部分，但提到了检测评价及修复技术导则，可能间接涉及内检测的标准或要求。\\n\\n文档[4]详细列出了表4-1，其中提到了智能内检测的技术方法，包括几何测径和漏磁检测，以及需要提取的信息如几何变形、本体缺陷和焊接缺陷。这应该是内检测的具体步骤和技术依据。\\n\\n综合这些信息，管道内检测主要是通过智能内检测技术，按照相关标准进行，比如GB/T 27699、SY/T 6597、Q/SY 1267。这些标准指导了检测的具体方法，如几何测径和漏磁检测，用于识别管道的变形和缺陷。\\n\\n另外，文档[1]和[4]都提到了智能内检测，所以引用这两个文档作为主要依据。文档[2]虽然没有直接讲检测方法，但提到了维修时要配合内检测，可能在实际操作中有帮助，但这里可能不需要引用。\\n\\n所以，我的回答应该包括以下几点：\\n1. 智能内检测是主要方法。\\n2. 使用几何测径和漏磁检测技术。\\n3. 提取的信息包括几何变形、本体缺陷和焊接缺陷。\\n4. 引用文档[1]和[4]作为支持。\\n\\n现在，把这些整合成一个连贯的回答，并加上正确的引用格式。')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ChatCompletionMessage(content='根据提供的上下文，管道内检测主要通过智能内检测技术进行，具体步骤和技术要求如下：\\n\\n1. **智能内检测技术**：主要采用几何测径和漏磁检测方法，用于识别管道的几何变形、本体缺陷和焊接缺陷。该技术符合GB/T 27699、SY/T 6597和Q/SY 1267等标准要求。\\n2. **检测流程**：在检测过程中，需要确保检测器能够顺利通过管道，避免使用可能影响其通过性的维修方法。\\n\\n通过这些方法，可以有效评估管道的当前状况，确保其安全性和完整性。\\n\\n<statement>管道内检测主要通过智能内检测技术进行，采用几何测径和漏磁检测方法，用于识别管道的几何变形、本体缺陷和焊接缺陷。该技术符合GB/T 27699、SY/T 6597和Q/SY 1267等标准要求。<cite>[1][4]</cite></statement>', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='嗯，我现在需要回答的问题是如何进行管道内检测。首先，我得看看提供的上下文里有什么相关信息。让我仔细看看每个文档的内容。\\n\\n文档[1]提到“检测评价”是通过智能内检测、直接评价、压力试验或其他技术来确定管道当前状况的过程。这说明智能内检测是一个重要的方法，应该是管道内检测的一部分。\\n\\n文档[2]讲的是管道维修时优先使用不影响生产的环保技术，并且提到对于采用智能内检测的管道，不应采用影响内检测器通过性的维修方法。这说明在维修时，要考虑到内检测器的使用，可能涉及到检测前的准备工作。\\n\\n文档[3]虽然主要讲完整性管理的背景和组成部分，但提到了检测评价及修复技术导则，可能间接涉及内检测的标准或要求。\\n\\n文档[4]详细列出了表4-1，其中提到了智能内检测的技术方法，包括几何测径和漏磁检测，以及需要提取的信息如几何变形、本体缺陷和焊接缺陷。这应该是内检测的具体步骤和技术依据。\\n\\n综合这些信息，管道内检测主要是通过智能内检测技术，按照相关标准进行，比如GB/T 27699、SY/T 6597、Q/SY 1267。这些标准指导了检测的具体方法，如几何测径和漏磁检测，用于识别管道的变形和缺陷。\\n\\n另外，文档[1]和[4]都提到了智能内检测，所以引用这两个文档作为主要依据。文档[2]虽然没有直接讲检测方法，但提到了维修时要配合内检测，可能在实际操作中有帮助，但这里可能不需要引用。\\n\\n所以，我的回答应该包括以下几点：\\n1. 智能内检测是主要方法。\\n2. 使用几何测径和漏磁检测技术。\\n3. 提取的信息包括几何变形、本体缺陷和焊接缺陷。\\n4. 引用文档[1]和[4]作为支持。\\n\\n现在，把这些整合成一个连贯的回答，并加上正确的引用格式。')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"如何进行管道内检测\"\n",
    "context = \"\"\"\n",
    "文档[1]\n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a329df4az280:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"1.8 检测评价 inspection assessment\\n通过智能内检测、直接评价、压力试验或其他已证实的可以确定管道状态的等同技术来确定管道当前状况的过程。\\n\"\n",
    "\n",
    "文档[2]\n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a323sgxfu3gg:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"管道进行维修时，优先采用对生产影响较小且安全环保的技术。对于采用智能内检测的管道，不应采用影响内检测器通过性的维修方法。管体缺陷修复相关技术要求按照《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》第七章和《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》第七章执行，参见表5-2和表5-3。\\n\"\n",
    "\n",
    "文档[3]      \n",
    "      \"title\": \"a3178x1tmk1s:a35gf1ubjqio:a35ixqlhz37k:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\",\n",
    "      \"content\": \"\\n前  言\\n完整性管理是为保障油气田管道和站场完整、提高本质安全而进行的一系列管理活动，是近年来逐渐发展成熟并得到成功应用的管理体系。2016年以来，中国石油天然气股份有限公司（以下简称“股份公司”）启动油气田管道和站场完整性管理工作，持续开展试点工程，并配套开展了科研攻关，取得了良好的效果。完整性管理被证明是油气田管道和站场提升本质安全，延长使用寿命，提高经济效益的有效手段。\\n为科学推进油气田管道和站场完整性管理工作，助力上游业务提质、降本、增效发展，提高油气田管道和站场管理水平，股份公司勘探与生产分公司组织规划总院编制完成了《中国石油天然气股份有限公司油气田管道和站场完整性管理规定》，组织西南油气田分公司编制完成了《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司气田集输管道检测评价及修复技术导则》、《中国石油天然气股份有限公司油气集输站场检测评价及维护技术导则》，从管理和技术两个方面对完整性管理提出了具体的要求。管理规定和三个技术导则互相支持、互为补充，是上游板块完整性管理文件体系的重要内容。\\n《中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则》，按照管道分类分级，重点阐述了油田集输管道检测评价及修复的技术要求，并对高后果区识别、风险评价、适用性评价等内容进行了说明。最后分集油、出油管道给出了使用案例。\\n\"      \n",
    "Snippet [4]      \n",
    "      \"title\": \"a3178x1tmk1s:a31x0gaukoow:a320f5h7kkjk:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\",\n",
    "      \"content\": \"表4-1  Ⅰ类管道基线检测技术方法要求\\n<table style='width: 100%' border='1'><tr><td>检测项目</td><td>参考标准</td><td>技术方法及要求</td></tr><tr><td>管道中心线测量</td><td>Q/SY 1180.6</td><td>采集精度达到亚米级，宜选用载波相位差分（RTK）测量技术。建设期以管道焊缝为特征点采集坐标；运行初期以75米间距采集埋深和位置坐标。</td></tr><tr><td rowspan=4>路由调查</td><td>GB 50251</td><td rowspan=4>采集管道附属设施及周边信息数据。涉及坐标采集时，宜选用RTK测量技术。</td></tr><tr><td>SY/T 0087.1</td></tr><tr><td>SY/T 6064</td></tr><tr><td>SY/T 6828</td></tr><tr><td rowspan=3>智能内检测</td><td>GB/T 27699</td><td rowspan=3>选择几何测径和漏磁检测。提取几何变形、本体缺陷、焊接缺陷等信息。</td></tr><tr><td>SY/T 6597</td></tr><tr><td>Q/SY 1267</td></tr><tr><td rowspan=3>外腐蚀检测</td><td>GB/T 19285</td><td rowspan=3>应开展防腐层整体性能和缺陷检测、极化电位测试、自然电位测试；高风险区域进行密间隔电位（CIPS）测试。</td></tr><tr><td>GB/T 21246</td></tr><tr><td>SY/T 0087.1</td></tr></table>\\n\"\n",
    "\"\"\"\n",
    "answer = \"\"\"\n",
    "进行管道内检测的步骤如下：\\n\\n1. **准备阶段**：根据检查需求选择合适的检测方法，如超声波、磁粉或射线照相等。\\n2. **清理管道**：确保内部无阻碍物以提高设备效率。\\n3. **安装检测工具**：将带有传感器和摄像头的仪器送入管道内。\\n4. **执行检测操作**：\\n   - 数据采集：利用内置传感器获取关键参数信息。\\n   - 实时监控与记录：通过无线或电缆传输数据至地面控制中心。\\n5. **数据分析与报告生成**：\\n   - 解析信息，识别潜在问题并编写详细技术报告。\\n6. **验证与后续行动**：根据分析结果制定修复计划。\\n\\n确保操作符合相关行业标准和法规。\n",
    "\"\"\"\n",
    "\n",
    "example = \"\"\"\n",
    "周笔畅在《超级女声》中演唱了多首歌曲：\n",
    "<statement>《万水千山总是情》：这首歌是周笔畅在《超级女声》决赛中演唱的一首经典歌曲，展现了她的音乐才华和深情演绎。<cite>[1]</cite></statement>\n",
    "<statement>《笔记》：这首歌是周笔畅在《超级女声》期间演唱的成名曲，也是她出道后的第一首个人作品。歌词表达了对母亲的感谢和对成长的感悟，这首歌收录于《超级女声终极PK》合集中。<cite>[3][4]</cite></statement>\n",
    "<statement>《阿里山的姑娘》：这首歌是周笔畅在《超级女声》总决选中演唱的一首歌曲。<cite>[5]</cite></statement>\n",
    "<statement>《青春舞曲》：这首歌是周笔畅在《超级女声》总决选冠军赛中演唱的一首歌曲。<cite></cite></statement>\n",
    "<statement>《解脱》：这首歌是周笔畅在《超级女声》中演唱的代表作之一，展现了她深情款款的演唱风格。<cite></cite></statement>\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## GOAL\n",
    "Your primary task is to answer the question based on the provided contexts.\n",
    "\n",
    "Your secondary task is to add citations to the answer.\n",
    "Specific instructions for citations:\n",
    "- If a factual statement in the answer uses information from context snippets (e.g., I1, I2, ..., In), append the citation in the format:\n",
    "      - <statement>the factual statment<cite>[I1][I2]...[In]</cite></statement>\n",
    "- For other sentences (e.g., introductory, summarizing, reasoning, or inferential statements), append <cite></cite> to indicate no citations are needed.\n",
    "- Do not alter the original content or format of the answer beyond adding citations.\n",
    "\n",
    "the citations be like:\n",
    "{example}\n",
    "\n",
    "## TASK\n",
    "Now, answer the question based on the following contexts and append citations at the end of the answer.\n",
    "Reply in Chinese.\n",
    "\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "[Question]\n",
    "{query}\n",
    "\n",
    "[Answer with Citations]\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Marss",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
